************************************************
*****REPLICATION_CODE_Public Administration*****
************************************************


use "RelicationData",clear	 


**Table 1. Respondent characteristics. 
tab1 female Age_sample Area



**Table 3 Summary statistics.
sum Cooperation_choice Cooperation_willingness Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation Human_voice 


ssc install schemepack, replace
set scheme white_tableau

**Figure 3. The effect of gender congruence on individual choice
eststo clear
gr drop _all
eststo: reg Cooperation_choice Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==1,cluster(id)
estimates store Model4
					
coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_gender) ///
                    coeflabels(Same_gender="Same gender", labsize(small)) ///
                    xline(0, lpattern(dash)) plotregion(margin(small)) title("") legend(off) levels(95) byopts(compact row(1)) ///
                    format(%9.2g) mlabposition(12) mlabgap(minuscule) mlabel(string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**", cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus) msize(small) xscale(range(-0.1 (0.05)0.2)) saving(female, replace)

graph combine female.gph, title("Female: N=1568", size(small))			
graph save female2.gph, replace					
					
					
eststo: reg Cooperation_choice Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==0,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==0,cluster(id)
estimates store Model6
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==0,cluster(id)
estimates store Model7
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==0,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model3), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_gender) ///
					coeflabels(Same_gender="Same gender" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)   xscale(range(-0.1 (0.05)0.2)) saving(male, replace)
					
graph combine male.gph, title("Male: N=1632", size(small))			
graph save male2.gph, replace		
					
gr combine female2.gph male2.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10) ysize(9)




**Figure 4. The effect of age congruence on individual choice
eststo clear
gr drop _all
eststo: reg Cooperation_choice Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.2 (0.05)0.2))  saving(age1, replace)

graph combine age1.gph, title("18 to 29 years old: N=800", size(small))		
graph save age11.gph, replace					
			


eststo: reg Cooperation_choice Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==2,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==2,cluster(id)
estimates store Model6
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==2,cluster(id)
estimates store Model7
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.2 (0.05)0.2))  saving(age2, replace)

graph combine age2.gph, title("30 to 39 years old: N=960", size(small))		
graph save age22.gph, replace

					
eststo clear
eststo: reg Cooperation_choice Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==3,cluster(id)
estimates store Model9
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==3,cluster(id)
estimates store Model10
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==3,cluster(id)
estimates store Model11
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.2 (0.05)0.2))  saving(age3, replace)
					
graph combine age3.gph, title("40 to 49 years old: N=800", size(small))	
graph save age33.gph, replace
			
					
	
	
eststo clear
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==4,cluster(id)
estimates store Model13
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==4,cluster(id)
estimates store Model14
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==4,cluster(id)
estimates store Model15
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==4,cluster(id)
estimates store Model16

coefplot (Model13) , bylabel("Traffic stop")  ||  (Model14) , bylabel("ID checks") || (Model15), bylabel("Service center")  || (Model16), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.2 (0.05)0.2)) 	saving(age4, replace)	

graph combine age4.gph, title("50 years of age or older: N=640", size(small))	
graph save age44.gph, replace
					
	
	
	
gr combine age11.gph age22.gph age33.gph age44.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(10)




**Figure 5. The effect of accent congruence on individual choice
eststo clear
gr drop _all
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.5 (0.1)0.5)) saving(ky1, replace)

graph combine ky1.gph, title("Local dialect: N=1102", size(small))	
graph save ky11.gph, replace


eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==2,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==2,cluster(id)
estimates store Model6
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==2,cluster(id)
estimates store Model7
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.5 (0.1)0.5))  saving(ky2, replace)

graph combine ky2.gph, title("Dialect from another region (hometown): N=50", size(small))	
graph save ky22.gph, replace

					
eststo clear
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==3,cluster(id)
estimates store Model9
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==3,cluster(id)
estimates store Model10
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==3,cluster(id)
estimates store Model11
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.5 (0.1)0.5))  saving(ky3, replace)	

graph combine ky3.gph, title("Standard Mandarin: N=2048", size(small))	
graph save ky33.gph, replace

					
gr combine ky11.gph ky22.gph ky33.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);"" * p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)




**Figure 6. The effect of party affiliation congruence on individual choice
eststo clear
gr drop _all
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==1,cluster(id)
estimates store Model3

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") ||, ///
                    keep(Same_party_affiliation) ///
					coeflabels(Same_party_affiliation="Same party affiliation",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.3 (0.1)0.3)) saving(ccp1, replace)
					
graph combine ccp1.gph, title("CPC member: N=740", size(small))	
graph save ccp11.gph, replace



eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==0,cluster(id)
estimates store Model4
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==0,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==0,cluster(id)
estimates store Model6

coefplot (Model4) , bylabel("Traffic stop") ||  (Model5) , bylabel("ID checks") || (Model6), bylabel("Service center")  ||, ///
                    keep(Same_party_affiliation) ///
					coeflabels(Same_party_affiliation="Same party affiliation" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.3 (0.1)0.3)) saving(ccp2, replace)

graph combine ccp2.gph, title("Non_CPC member: N=2460", size(small))	
graph save ccp22.gph, replace

				
gr combine ccp11.gph ccp22.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)




**Figure 7. The effects of human voice on individual choice 
eststo clear
eststo: reg Cooperation_choice  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1,cluster(id)
estimates store Model1

coefplot Model1 ,  title("Government hotline")  ///
                   scheme(s1mono)   ///
					coeflabels(Human_voice =`""{bf:Human Voice}" "(Ref: AI chatbot)""',labsize(small)) ///
					keep(Human_voice) ///
					plotregion(margin(small)) ///
					legend(off) ///
					levels(95)  ///
					byopts( compact row(1))  ///
					xtitle("Note: N=3200; OLS with robust standard errors clustered by each respondent;""95% confidence interval (two-tailed); * p < .05, ** p < .01, *** p < .001.", size(small) justification(left) )  xlabel(,labsize(vsmall))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(0.3 (0.1)0.6)) mcolor(ebblue) ciopts(lc(ebblue))  

					

					
					
**Figure 8. The effect of gender congruence on perceived active representation.
eststo clear
gr drop _all
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==1,cluster(id)
estimates store Model1
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==1,cluster(id)
estimates store Model2
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==1,cluster(id)
estimates store Model3
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==1,cluster(id)
estimates store Model4
					
coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_gender) ///
                    coeflabels(Same_gender="Same gender", labsize(small)) ///
                    xline(0, lpattern(dash)) plotregion(margin(small)) title("") legend(off) levels(95) byopts(compact row(1)) ///
                    format(%9.2g) mlabposition(12) mlabgap(minuscule) mlabel(string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**", cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus) msize(small) xscale(range(-0.5(0.25)0.5)) saving(female, replace)

graph combine female.gph, title("Female: N=1568", size(small))			
graph save female2.gph, replace					
					
					
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==0,cluster(id)
estimates store Model5
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==0,cluster(id)
estimates store Model6
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==0,cluster(id)
estimates store Model7
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==0,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model3), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_gender) ///
					coeflabels(Same_gender="Same gender" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.5(0.25)0.5))  saving(male, replace)

graph combine male.gph, title("Male: N=1632", size(small))			
graph save male2.gph, replace		
					
gr combine female2.gph male2.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10) ysize(9)
					
					
	
	
**Figure 9. The effect of age congruence on perceived active representation.	
eststo clear
gr drop _all
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==1,cluster(id)
estimates store Model1
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==1,cluster(id)
estimates store Model2
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==1,cluster(id)
estimates store Model3
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1 (0.5)1))  saving(age1, replace)

graph combine age1.gph, title("18 to 29 years old: N=800", size(small))		
graph save age11.gph, replace					
			


eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==2,cluster(id)
estimates store Model5
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==2,cluster(id)
estimates store Model6
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==2,cluster(id)
estimates store Model7
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)   xscale(range(-1 (0.5)1))  saving(age2, replace)

graph combine age2.gph, title("30 to 39 years old: N=960", size(small))		
graph save age22.gph, replace

					
eststo clear
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==3,cluster(id)
estimates store Model9
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==3,cluster(id)
estimates store Model10
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==3,cluster(id)
estimates store Model11
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1 (0.5)1))  saving(age3, replace)
					
graph combine age3.gph, title("40 to 49 years old: N=800", size(small))	
graph save age33.gph, replace
			
					
	
	
eststo clear
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==4,cluster(id)
estimates store Model13
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==4,cluster(id)
estimates store Model14
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==4,cluster(id)
estimates store Model15
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==4,cluster(id)
estimates store Model16

coefplot (Model13) , bylabel("Traffic stop")  ||  (Model14) , bylabel("ID checks") || (Model15), bylabel("Service center")  || (Model16), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1 (0.5)1)) saving(age4, replace)	

graph combine age4.gph, title("50 years of age or older: N=640", size(small))	
graph save age44.gph, replace
					
	
gr combine age11.gph age22.gph age33.gph age44.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(10)	
	
	
	
	
	
**Figure 10. The effect of accent congruence on perceived active representation.	
eststo clear
gr drop _all
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==1,cluster(id)
estimates store Model1
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==1,cluster(id)
estimates store Model2
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==1,cluster(id)
estimates store Model3
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-4(1)2))  saving(ky1, replace)

graph combine ky1.gph, title("Local dialect: N=1102", size(small))	
graph save ky11.gph, replace


eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==2,cluster(id)
estimates store Model5
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==2,cluster(id)
estimates store Model6
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==2,cluster(id)
estimates store Model7
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop")  ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center") || (Model8), bylabel("Government hotline") ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-4(1)2))   saving(ky2, replace)
					

graph combine ky2.gph, title("Dialect from another region (hometown): N=50", size(small))	
graph save ky22.gph, replace



eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==3,cluster(id)
estimates store Model9
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==3,cluster(id)
estimates store Model10
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==3,cluster(id)
estimates store Model11
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-4(1)2))  saving(ky3, replace)	

graph combine ky3.gph, title("Standard Mandarin: N=2048", size(small))	
graph save ky33.gph, replace

					
gr combine ky11.gph ky22.gph ky33.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)	
	
	
	
	
**Figure 11. The effect of party affiliation congruence on perceived active representation.	
eststo clear
gr drop _all
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==1,cluster(id)
estimates store Model1
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==1,cluster(id)
estimates store Model2
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==1,cluster(id)
estimates store Model3

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") ||, ///
                    keep(Same_party_affiliation) ///
					coeflabels(Same_party_affiliation="Same party affiliation",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-1(0.5)1.5))  saving(ccp1, replace)
					
graph combine ccp1.gph, title("CPC member: N=740", size(small))	
graph save ccp11.gph, replace



eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==0,cluster(id)
estimates store Model4
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==0,cluster(id)
estimates store Model5
eststo: reg Perceived_active_representation Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==0,cluster(id)
estimates store Model6

coefplot (Model4) , bylabel("Traffic stop") ||  (Model5) , bylabel("ID checks") || (Model6), bylabel("Service center")  ||, ///
                    keep(Same_party_affiliation) ///
					coeflabels(Same_party_affiliation="Same party affiliation" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1(0.5)1.5)) saving(ccp2, replace)

graph combine ccp2.gph, title("Non_CPC member: N=2460", size(small))	
graph save ccp22.gph, replace

				
gr combine ccp11.gph ccp22.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)	
	
	
	
	
	
**Figure 12. The effects of human voice on perceived active representation. 
eststo clear
eststo: reg Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1,cluster(id)
estimates store Model1

coefplot Model1 ,  title("Government hotline")  ///
                   scheme(s1mono)   ///
					coeflabels(Human_voice =`""{bf:Voice}" "(Ref: AI chatbot)""') ///
					keep(Human_voice) ///
					plotregion(margin(small)) ///
					legend(off) ///
					levels(95)  ///
					byopts( compact row(1))  ///
					xtitle("Note: N=3200; OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(small) justification(left) )  xlabel(,labsize(vsmall))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(0.3 (0.1)0.6)) mcolor(ebblue) ciopts(lc(ebblue)) 
					
					
	
	
					
					
*****Appendix B-1
*****Replication of Figure 3
eststo clear
gr drop _all
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==1,cluster(id)
estimates store Model4

					
coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_gender) ///
                    coeflabels(Same_gender="Same gender", labsize(small)) ///
                    xline(0, lpattern(dash)) plotregion(margin(small)) title("") legend(off) levels(95) byopts(compact row(1)) ///
                    format(%9.2g) mlabposition(12) mlabgap(minuscule) mlabel(string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**", cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus) msize(small) xscale(range(-0.5 (0.05)1)) saving(female, replace)

graph combine female.gph, title("Female subgroup: N=1568", size(small))			
graph save female2.gph, replace					
					
					
					

eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==0,cluster(id)
estimates store Model5
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==0,cluster(id)
estimates store Model6
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==0,cluster(id)
estimates store Model7
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==0,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model3), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_gender) ///
					coeflabels(Same_gender="Same gender" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)   xscale(range(-0.5 (0.05)1)) saving(male, replace)

graph combine male.gph, title("Male subgroup: N=1632", size(small))			
graph save male2.gph, replace		
					
gr combine female2.gph male2.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10) ysize(9)



*****Appendix B-2
***replication of figure 4
***same age
eststo clear
gr drop _all
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1 (0.25)1))  saving(age1, replace)

graph combine age1.gph, title("18 to 29 years old: N=800", size(small))		
graph save age11.gph, replace					
			


eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==2,cluster(id)
estimates store Model5
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==2,cluster(id)
estimates store Model6
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==2,cluster(id)
estimates store Model7
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1 (0.25)1))   saving(age2, replace)

graph combine age2.gph, title("30 to 39 years old: N=960", size(small))		
graph save age22.gph, replace

					
eststo clear
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==3,cluster(id)
estimates store Model9
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==3,cluster(id)
estimates store Model10
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==3,cluster(id)
estimates store Model11
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-1 (0.25)1))   saving(age3, replace)
					
graph combine age3.gph, title("40 to 49 years old: N=800", size(small))	
graph save age33.gph, replace
			
					
	
	
eststo clear
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==4,cluster(id)
estimates store Model13
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==4,cluster(id)
estimates store Model14
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==4,cluster(id)
estimates store Model15
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==4,cluster(id)
estimates store Model16

coefplot (Model13) , bylabel("Traffic stop")  ||  (Model14) , bylabel("ID checks") || (Model15), bylabel("Service center")  || (Model16), bylabel("Government hotline")  ||, ///
                    keep(Same_age_cohort) ///
					coeflabels(Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-1 (0.25)1)) saving(age4, replace)	

graph combine age4.gph, title("50 years of age or older: N=640", size(small))	
graph save age44.gph, replace
					
	
gr combine age11.gph age22.gph age33.gph age44.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(10)



*****Appendix B-3
**replication of figure 5
****same accent
eststo clear
gr drop _all
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-2.5(0.1)2))  saving(ky1, replace)

graph combine ky1.gph, title("Local dialect: N=1102", size(small))	
graph save ky11.gph, replace


eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==2,cluster(id)
estimates store Model5
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==2,cluster(id)
estimates store Model6
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==2,cluster(id)
estimates store Model7
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop")  ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center") || (Model8), bylabel("Government hotline") ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-2.5(0.1)2))  saving(ky2, replace)
					
graph combine ky2.gph, title("Dialect from another region (hometown): N=50", size(small))	
graph save ky22.gph, replace



eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==3,cluster(id)
estimates store Model9
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==3,cluster(id)
estimates store Model10
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==3,cluster(id)
estimates store Model11
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Same_accent) ///
					coeflabels(Same_accent="Same accent" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-2.5(0.1)2)) saving(ky3, replace)	

graph combine ky3.gph, title("Standard Mandarin: N=2048", size(small))	
graph save ky33.gph, replace

					
gr combine ky11.gph ky22.gph ky33.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)






*************Figure B-4
****replication of figure 6
eststo clear
gr drop _all
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==1,cluster(id)
estimates store Model3

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") ||, ///
                    keep(Same_party_affiliation) ///
					coeflabels(Same_party_affiliation="Same party affiliation",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-1(0.5)1.5))  saving(ccp1, replace)
					
graph combine ccp1.gph, title("CPC member: N=740", size(small))	
graph save ccp11.gph, replace



eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==0,cluster(id)
estimates store Model4
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==0,cluster(id)
estimates store Model5
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==0,cluster(id)
estimates store Model6

coefplot (Model4) , bylabel("Traffic stop") ||  (Model5) , bylabel("ID checks") || (Model6), bylabel("Service center")  ||, ///
                    keep(Same_party_affiliation) ///
					coeflabels(Same_party_affiliation="Same party affiliation" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-1(0.5)1.5)) saving(ccp2, replace)

graph combine ccp2.gph, title("Non_CPC member: N=2460", size(small))	
graph save ccp22.gph, replace


				
gr combine ccp11.gph ccp22.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)






*******Figure B-5
***replication of figure 7
*************voice			 
eststo clear
eststo: reg Cooperation_willingness Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1,cluster(id)
estimates store Model1

coefplot Model1 ,  title("Government hotline")  ///
                   scheme(s1mono)   ///
					coeflabels(Human_voice =`""{bf:Voice}" "(Ref: AI chatbot)""',labsize(small)) ///
					keep(Human_voice) ///
					plotregion(margin(small)) ///
					legend(off) ///
					levels(95)  ///
					byopts( compact row(1))  ///
					xtitle("Note: N=3200; OLS with robust standard errors clustered by each respondent;""95% confidence interval (two-tailed); * p < .05, ** p < .01, *** p < .001.", size(small) justification(left) )  xlabel(,labsize(vsmall))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(1(1)3)) mcolor(ebblue) ciopts(lc(ebblue))
					
					
					
					
					
					
**********Figure C-1**********
*same gender
eststo clear
gr drop _all
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==1,cluster(id)
estimates store Model4

					
coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Perceived_active_representation Same_gender) ///
                    coeflabels(Perceived_active_representation="Perceived active representation" Same_gender="Same gender", labsize(small)) ///
                    xline(0, lpattern(dash)) plotregion(margin(small)) title("") legend(off) levels(95) byopts(compact row(1)) ///
                    format(%9.2g) mlabposition(12) mlabgap(minuscule) mlabel(string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**", cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus) msize(small) xscale(range(-0.1(0.25)0.2)) saving(female, replace)

graph combine female.gph, title("Female: N=1568", size(small))			
graph save female2.gph, replace					
					
					

eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & female==0,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & female==0,cluster(id)
estimates store Model6
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & female==0,cluster(id)
estimates store Model7
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & female==0,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model3), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Perceived_active_representation Same_gender) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_gender="Same gender" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.1(0.25)0.2))  saving(male, replace)

graph combine male.gph, title("Male: N=1632", size(small))			
graph save male2.gph, replace		

					
gr combine female2.gph male2.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10) ysize(9)






					
*****Figure C-2					
***same age
eststo clear
gr drop _all
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice  if  Hotline==1 & Age_sample==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Perceived_active_representation Same_age_cohort) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_age_cohort="Same age cohort",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.25 (0.125)0.25))  saving(age1, replace)

graph combine age1.gph, title("18 to 29 years old: N=800", size(small))		
graph save age11.gph, replace					
			


eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==2,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==2,cluster(id)
estimates store Model6
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==2,cluster(id)
estimates store Model7
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop") ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center")  || (Model8), bylabel("Government hotline")  ||, ///
                    keep(Perceived_active_representation Same_age_cohort) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)   xscale(range(-0.25 (0.125)0.25))  saving(age2, replace)

graph combine age2.gph, title("30 to 39 years old: N=960", size(small))		
graph save age22.gph, replace


					
eststo clear
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==3,cluster(id)
estimates store Model9
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==3,cluster(id)
estimates store Model10
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==3,cluster(id)
estimates store Model11
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice  if  Hotline==1 & Age_sample==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Perceived_active_representation Same_age_cohort) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.25 (0.125)0.25))  saving(age3, replace)
					
graph combine age3.gph, title("40 to 49 years old: N=800", size(small))	
graph save age33.gph, replace
			
					
	
	
eststo clear
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & Age_sample==4,cluster(id)
estimates store Model13
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & Age_sample==4,cluster(id)
estimates store Model14
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & Age_sample==4,cluster(id)
estimates store Model15
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & Age_sample==4,cluster(id)
estimates store Model16

coefplot (Model13) , bylabel("Traffic stop")  ||  (Model14) , bylabel("ID checks") || (Model15), bylabel("Service center")  || (Model16), bylabel("Government hotline")  ||, ///
                    keep(Perceived_active_representation Same_age_cohort) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_age_cohort="Same age cohort" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.25 (0.125)0.25)) saving(age4, replace)	

graph combine age4.gph, title("50 years of age or older: N=640", size(small))	
graph save age44.gph, replace
	
	
	
gr combine age11.gph age22.gph age33.gph age44.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(11)  ysize(12)
					
	
	
	
	
	
	
*****Figure C-3					
eststo clear
gr drop _all
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==1,cluster(id)
estimates store Model3
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice  if  Hotline==1 & accent==1,cluster(id)
estimates store Model4

coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") || (Model4), bylabel("Government hotline") ||, ///
                    keep(Perceived_active_representation Same_accent) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.5(0.24)0.5))  saving(ky1, replace)

graph combine ky1.gph, title("Local dialect: N=1102", size(small))	
graph save ky11.gph, replace


eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==2,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==2,cluster(id)
estimates store Model6
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==2,cluster(id)
estimates store Model7
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==2,cluster(id)
estimates store Model8

coefplot (Model5) , bylabel("Traffic stop")  ||  (Model6) , bylabel("ID checks") || (Model7), bylabel("Service center") || (Model8), bylabel("Government hotline") ||, ///
                    keep(Perceived_active_representation Same_accent) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_accent="Same accent",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(small))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.5(0.24)0.5))  saving(ky2, replace)
					
graph combine ky2.gph, title("Dialect from another region (hometown): N=50", size(small))	
graph save ky22.gph, replace



eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & accent==3,cluster(id)
estimates store Model9
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & accent==3,cluster(id)
estimates store Model10
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & accent==3,cluster(id)
estimates store Model11
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1 & accent==3,cluster(id)
estimates store Model12

coefplot (Model9) , bylabel("Traffic stop") ||  (Model10) , bylabel("ID checks") || (Model11), bylabel("Service center")  || (Model12), bylabel("Government hotline")  ||, ///
                    keep(Perceived_active_representation Same_accent) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_accent="Same accent" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.5(0.24)0.5))  saving(ky3, replace)	

graph combine ky3.gph, title("Standard Mandarin: N=2048", size(small))	
graph save ky33.gph, replace

					
gr combine ky11.gph ky22.gph ky33.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)
		
		
		
		
		
		
		
					
**********Figure C-4**********					
**same party
eststo clear
gr drop _all
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==1,cluster(id)
estimates store Model1
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==1,cluster(id)
estimates store Model2
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==1,cluster(id)
estimates store Model3


coefplot (Model1) , bylabel("Traffic stop")  ||  (Model2) , bylabel("ID checks") || (Model3), bylabel("Service center") ||, ///
                    keep(Perceived_active_representation Same_party_affiliation) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_party_affiliation="Same party affiliation",labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts( compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(-0.25(0.125)0.4)) saving(ccp1, replace)
					
graph combine ccp1.gph, title("CPC member: N=740", size(small))	
graph save ccp11.gph, replace



eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Pull_over==1 & CCP_member==0,cluster(id)
estimates store Model4
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if ID_check==1  & CCP_member==0,cluster(id)
estimates store Model5
eststo: reg Cooperation_choice Perceived_active_representation  Same_gender Same_age_cohort Same_accent Same_party_affiliation if  Hall==1  & CCP_member==0,cluster(id)
estimates store Model6


coefplot (Model4) , bylabel("Traffic stop") ||  (Model5) , bylabel("ID checks") || (Model6), bylabel("Service center")  ||, ///
                    keep(Perceived_active_representation Same_party_affiliation) ///
					coeflabels(Perceived_active_representation="Perceived active representation" Same_party_affiliation="Same party affiliation" ,labsize(small)) ///
					xline(0,lpattern(dash) )  plotregion(margin(medsmall))  title("")  legend(off)   levels(95)   byopts(compact row(1))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small)  xscale(range(-0.25(0.125)0.4)) saving(ccp2, replace)

graph combine ccp2.gph, title("Non_CPC member: N=2460", size(small))	
graph save ccp22.gph, replace


				
gr combine ccp11.gph ccp22.gph, col(1) note("Note: OLS with robust standard errors clustered by each respondent; 95% confidence interval (two-tailed);""* p < .05, ** p < .01, *** p < .001.", size(vsmall) position(6)) imargin(tiny) xsize(10)  ysize(9)
				
									


									
**********Figure C-5**********									
*************voice			 
eststo clear
eststo: reg Cooperation_choice Perceived_active_representation Same_gender Same_age_cohort Same_accent Human_voice if  Hotline==1,cluster(id)
estimates store Model1

coefplot Model1 ,  title("Government hotline")  ///
                   scheme(s1mono)   ///
					coeflabels(Human_voice =`""{bf:Voice}" "(Ref: AI chatbot)""') ///
					keep(Perceived_active_representation Human_voice) ///
					plotregion(margin(small)) ///
					legend(off) ///
					levels(95)  ///
					byopts( compact row(1))  ///
					xtitle("Note: N=3200; OLS with robust standard errors clustered by each respondent;""95% confidence interval (two-tailed); * p < .05, ** p < .01, *** p < .001.", size(small) justification(left) )  xlabel(,labsize(vsmall))  ///
					format(%9.2g) mlabposition(12)  mlabgap(minuscule)  mlabel( string(@b,"%4.2f")+cond(@pval<.001, "***", cond(@pval<.01, "**",   cond(@pval<.05, "*","")))) mlabsize(small) msymbol(plus)  msize(small) xscale(range(0 (0.1)0.4)) mcolor(ebblue) ciopts(lc(ebblue)) 					